// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow, Menu, ipcMain } = require('electron')
const path = require('path')

process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'

// Menu.setApplicationMenu(null)



function createWindow() {
    // 创建浏览器窗口
    const mainWindow = new BrowserWindow({
        width: 1000,
        // minWidth:800,
        height: 700,
        // minHeight:600,
        frame: false,
        resizable: false,
        transparent: true,
        center: true,
        enableRemoteModule: true,
        webPreferences: {
            nodeIntegration: true,
            contextIsolation: false,
            preload: path.join(__dirname, 'preload.js')
        }
    })

    require("@electron/remote/main").initialize()
    require("@electron/remote/main").enable(mainWindow.webContents)

    // 对于一个复杂的应用，ready-to-show 可能发出的太晚，会让应用感觉缓慢。
    // 在这种情况下，建议立刻显示窗口，并使用接近应用程序背景的 backgroundColor
    mainWindow.setBackgroundColor('rgb(28, 29, 32)')

    mainWindow.once('ready-to-show', () => {
        mainWindow.show()
    })

    // 加载 index.html
    mainWindow.loadURL("http://localhost:4321") // 此处跟electron官网路径不同，需要注意

    // 打开开发工具
    // mainWindow.webContents.openDevTools()

    ipcMain.on('min', (e) => {
        mainWindow.minimize()
    })
    ipcMain.on('max', (e) => {
        mainWindow.maximize()
    })
    ipcMain.on('close', (e) => {
        mainWindow.close()
    })
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
    createWindow()

    app.on('activate', function () {
        // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
        // 打开的窗口，那么程序会重新创建一个窗口。
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在
// 任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
})

// 在这个文件中，你可以包含应用程序剩余的所有部分的代码，
// 也可以拆分成几个文件，然后用 require 导入。